#ifndef utills_h__
#define utills_h__

#include <iostream>
#include <list>

template<int val>
struct Int2Type
{
    enum{ value = val };
};

struct SetOfChars
{
    typedef std::pair<char, char> Range;
    static Range makeNormal(char ch1, char ch2);
    std::list<Range> ranges_;
    std::list<char> singles_;
    SetOfChars(char ch): singles_(1, ch) {}
    SetOfChars(char ch1, char ch2): ranges_(1, SetOfChars::makeNormal(ch1, ch2)) {}
    SetOfChars &operator()(char ch);
    SetOfChars &operator()(char ch1, char ch2);
    bool in(char ch);
};                   

void makeIdent(std::ostream &stream, int ident);

#endif // utills_h__
